stack<char> st;
        for (int i = 0; i < num.size(); i++) {
            // 如果当前数字比栈顶元素小，且还有删除次数（k > 0），则弹出栈顶元素
            while (!st.empty() && k > 0 && st.top() > num[i]) {
                st.pop();
                k--;
            }
            st.push(num[i]); // 将当前数字压入栈中
        }

        // 如果还有剩余的删除次数（k > 0），从栈顶删除剩余的数字
        while (k > 0 && !st.empty()) {
            st.pop();
            k--;
        }

        // 将栈中的字符拼接成结果字符串
        string ret;
        while (!st.empty()) {
            ret += st.top();
            st.pop();
        }
        reverse(ret.begin(), ret.end()); // 反转字符串，恢复正确顺序
        //  去除前导零
        int i = 0;
        while (i < ret.size() && ret[i] == '0') {
            i++;
        }
        ret = ret.substr(i); // 截取去掉前导零后的部分

        // 如果结果为空，返回 "0"
        return ret.empty() ? "0" : ret;
        return ret;
    }